 | | HIPERSINTÁXIS |
Sintaxis Genérica
“¿Son las matemáticas la sintaxis del lenguaje?” (Gödel)
“Las matemáticas son la sintaxis lógica del lenguaje” (Carnap)
Concepto
MENTAL está basado en expresiones que tienen una sintaxis genérica, que denominamos hipersintaxis, porque transciende las sintaxis particulares.
La sintaxis de las expresiones MENTAL se divide en dos categorías:
- Las que utilizan operadores explícitos, como por ejemplo:
+
(suma), /
(particularización cualitativa), =
(sustitución), etc. Los operadores sólo pueden ser de dos tipos: monádicos y diádicos. Sus expresiones correspondientes se llaman, respectivamente, monádicas y diádicas. Los operadores actúan sobre operandos, que son expresiones.
- Las que utilizan paréntesis delimitadores: expresión serie (secuencia), expresión paralela (conjunto), distribución y expresión genérica. Este tipo de sintaxis se alinea con la filosofía de la llamada “Matemática Delimitadora” (Boundary Mathematics) [ver Aplicaciones – Matemática – Leyes de la Forma].
MENTAL utiliza ambos sistemas (operadores y delimitadores). Los operadores se pueden considerar superficiales porque “tocan” o están en contacto con los argumentos. Los delimitadores son de tipo profundo.
Símbolos
Como operadores explícitos se utilizan símbolos, un símbolo para cada primitiva semántica. El uso de símbolos se justifica por ofrecer las siguientes ventajas:
- Simplifica al máximo la especificación. El código es muy compacto, pero legible.
- Facilita la combinatoria.
- Independiza el lenguaje de los idiomas particulares. No hay palabras clave, al contrario que en los lenguajes de programación tradicionales.
- Intentan evocar conceptos universales, yendo más allá del signo. Los signos son de tipo superficial y requieren interpretación. Los símbolos son de tipo profundo, universal y poseen significado.
Operador Monádico
Sintaxis
En general, un operador monádico ⊥
se sitúa detrás del argumento x
. Es la notación postfija: x⊥
Justificación
Se utiliza el modelo objeto-acción, es decir, se especifica primero el argumento y luego la operación a realizar sobre él.
Ejemplos
x! // ejecutar x
x° // autoevaluar x
x↓ // acceder al contenido de x
Exploración de propiedades
Para determinar las posibles propiedades de un operador monádico ⊥
, vamos a explorar las formas sintácticas siguientes:
- Recursión normal:
x⊥⊥=(x⊥)⊥
(supone asociatividad a la izquierda)
- Recursión conceptual (autoaplicación):
x(⊥⊥)
(aplicar el operador ⊥
a sí mismo)
- Expresión nula:
θ⊥
- Expresión existencial:
α⊥
- Expresión universal:
Ω⊥
Criterios creativos (exploración de posibles nuevas semánticas)
Con el objeto de buscar posibles nuevas semánticas, vamos a explorar formas sintácticas alternativas.
- Operador monádico aislado:
⊥
(operador sin argumento)
En este caso, el argumento es implícito.
Ejemplo: ¡
(finalizar la ejecución en curso)
- Operador monádico a la izquierda:
⊥x
Ejemplos: .123
(el punto decimal es un operador)
- Operador monádico embebido:
x⊥y
En este caso, pese a ser monádico, ⊥
actúa sobre los dos argumentos.
Ejemplo: 123.456
(eq. 123. + .456
)
Operador Diádico
Sintaxis
Cuando un operador ⊥
actúa sobre dos argumentos, se utiliza la notación infija: x⊥y
Justificación
- Simplifica la especificación, al no necesitarse paréntesis.
- Es una forma fácil y simple de utilizar, la misma que se utiliza en las expresiones aritméticas.
- Facilita la comprensión, al utilizarse el operador como nexo de unión entre los dos argumentos.
Ejemplos
x+y // sumar x e y
x*y // multiplicar x e y
x∪y // unir x e y
Exploración de propiedades
Para determinar las posibles propiedades de un operador diádico ⊥
, vamos a explorar las formas sintácticas siguientes:
- Expresiones iguales:
x⊥x
(si se evalúa como x
, idempotencia)
- Expresiones simétricas:
x⊥y y⊥x
(si iguales, conmutatividad)
- Asociatividad:
x⊥(y⊥z) (x⊥y)⊥z
- Expresión nula:
x⊥θ θ⊥x θ⊥θ
- Expresión existencial:
x⊥α α⊥x α⊥α
- Expresión universal:
x⊥Ω Ω⊥x Ω⊥Ω
Criterios creativos (exploración de posibles nuevas semánticas)
Con el objeto de explorar posibles nuevas semánticas, vamos a explorar formas sintácticas alternativas.
- Operador aislado:
⊥
(operador sin argumento)
- Prefijo:
⊥x
El operador, a pesar de ser diádico, se intenta utilizar como prefijo.
Ejemplos: +x −x
- Postfijo:
x⊥
El operador diádico se utiliza como postfijo.
Ejemplo: x☆ // rep. x x x ... (repetición infinita)
Operador Poliádico
En MENTAL no hay operadores poliádicos, pero hay formas indirectas de que un operador ⊥
actúe sobre n
argumentos:
- Mediante una expresión de la forma
(x1 ⊥ x2 ⊥ ... ⊥ xn)
, que se interpreta con asociatividad a la izquierda: ((x1⊥x2)⊥x3) ... ⊥xn)
- Otra forma es que uno de los argumentos del operador diádico sea una secuencia, por ejemplo,
+⊣(3 7 5 4) // ev. (3+7+5+4)
ab⊣(3 7 5 4) // ev. (3 ab 7 ab 5 ab 4)
- Mediante paréntesis delimitadores, que se explica a continuación.
Tipos de Delimitadores
Paréntesis curvos
- Especifican secuencias. Por ejemplo,
(a b c)
.
- Sus componentes se evalúen en serie.
- Sirven para delimitar expresiones, junto con los operadores y los blancos.
- Se pueden especificar todos los pares de paréntesis curvos que se deseen, pues equivalen a uno sólo. Por ejemplo,
((a b c))
equivale a (a b c)
.
- Pueden tener un carácter temporal y desaparecer tras las operaciones.
- Hay también secuencias “holgadas”, que incluyen blancos en los extremos para indicar que se trata de una secuencia.
Ejemplos:
xyz // representa a (x y z)
(a b c) // secuencia
a+b // rep. (a + b)
ab+cd // rep. (ab + cd)
a*(b+c) // rep. (a * (b + c))
x(y–1)z // rep. (x y–1 z)
(((a))) // se evalúa como a
a*(((b+c))) // equivale a a*(b+c)
( abc ) // equivale a ( (a b c) ) (secuencia holgada que contiene una secuencia
Llaves
- Se utilizan para especificar conjuntos. Por ejemplo,
{a b c}
.
- Sus componentes se evalúan en paralelo.
- Tienen un carácter estable.
- Ejemplos:
{x y z} // conjunto
{a 123 b} // conjunto formado por dos elementos atómicos y una secuencia
{a {1 2 3} b} // conjunto que contiene un conjunto
Paréntesis angulares
- Delimitan el ámbito de una expresión genérica.
- Pueden contener parámetros, que se especifican en negrita.
- Ejemplos:
〈(c = a+b)〉 // especifica que siempre c es la suma de a y b
〈x+y〉 // representa a todas las expresiones que son suma de dos expresiones.
〈( f(x y) = x+y+5 )〉 // función de dos parámetros (x e y)
Paréntesis cuadrados
- Se utilizan para especificar distribuciones.
- Se utilizan dos niveles de paréntesis anidados: 1) uno externo, que especifica el ámbito de la operación, 2) otros más internos, que son los operandos a distribuir.
El nivel externo es opcional; si no se especifica, la distribución es local.
- Hay dos tipos: normal y lineal.
- Ejemplos:
[[a b] [c d]] // rep. ac ad bc bd (distribución normal con ámbito)
[⌊a b⌋ ⌊c d⌋] // rep. ac bd (distribución lineal con ámbito)
[a b]*2 // rep. a*2 b*2 (distribución normal local)
⌊a b⌋*⌊u v⌋ // rep. a*u b*v (distribución lineal local)